home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mntinc20 / vdibind.h < prev    next >
Text File  |  1992-05-15  |  16KB  |  432 lines

  1. #ifndef _VDIBIND_H
  2. #define _VDIBIND_H
  3.     
  4. #ifndef _COMPILER_H
  5. # include <compiler.h>
  6. #endif
  7.     
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. #ifndef _SIZE_T
  13. #  include <stddef.h>
  14. #endif
  15.  
  16. __EXTERN int     vswr_mode __PROTO((int handle, int mode));
  17. __EXTERN void     vs_color __PROTO((int handle, int index, int rgb[]));
  18. __EXTERN int     vsl_type __PROTO((int handle, int style));
  19. __EXTERN void     vsl_udsty __PROTO((int handle, int pat));
  20. __EXTERN int     vsl_width __PROTO((int handle, int width));
  21. __EXTERN int     vsl_color __PROTO((int handle, int index));
  22. __EXTERN void     vsl_ends __PROTO((int handle, int begstyle, int endstyle));
  23. __EXTERN int     vsm_type __PROTO((int handle, int symbol));
  24. __EXTERN void     vsm_height __PROTO((int handle, int height));
  25. __EXTERN int     vsm_color __PROTO((int handle, int index));
  26. __EXTERN int      vst_height __PROTO((int handle, int height, int *charw,
  27.                      int *charh, int *cellw, int *cellh));
  28. __EXTERN int     vst_point __PROTO((int handle, int point, int *charw,
  29.                     int *charh, int *cellw, int *cellh));
  30. __EXTERN int     vst_rotation __PROTO((int handle, int ang));
  31. __EXTERN int     vst_font __PROTO((int handle, int font));
  32. __EXTERN int     vst_color __PROTO((int handle, int index));
  33. __EXTERN int     vst_effects __PROTO((int handle, int effects));
  34. __EXTERN void     vst_alignment __PROTO((int handle, int hin, int vin,
  35.                     int *hout, int *vout)); 
  36. __EXTERN int     vsf_interior __PROTO((int handle, int style));
  37. __EXTERN int     vsf_fill __PROTO((int handle, int style));
  38. __EXTERN int     vsf_style __PROTO((int handle, int style));
  39. __EXTERN int     vsf_color __PROTO((int handle, int index));
  40. __EXTERN int     vsf_perimeter __PROTO((int handle, int vis));
  41. __EXTERN void     vsf_udpat __PROTO((int handle, int pat[], int planes));
  42.  
  43.  
  44. __EXTERN void     v_opnwk __PROTO((int work_in[], int *handle, int work_out[]));
  45. __EXTERN void     v_clswk __PROTO((int handle));
  46. __EXTERN void     v_opnvwk __PROTO((int work_in[], int *handle, int work_out[]));
  47. __EXTERN void     v_clsvwk __PROTO((int handle));
  48.  
  49.  
  50. __EXTERN void     v_clrwk __PROTO((int handle));
  51. __EXTERN void     v_updwk __PROTO((int handle));
  52. __EXTERN int     vst_load_fonts __PROTO((int handle, int select));
  53. __EXTERN void     vst_unload_fonts __PROTO((int handle, int select));
  54. __EXTERN void     vs_clip __PROTO((int handle, int clip_flag, int pxyarray[]));
  55.  
  56.  
  57. __EXTERN void     v_bar __PROTO((int handle, int pxyarray[]));
  58. __EXTERN void     v_arc __PROTO((int handle, int x, int y, int radius,
  59.                 int begang, int endang)); 
  60. __EXTERN void     v_pieslice __PROTO((int handle, int x, int y, int radius,
  61.                      int begang, int endang));
  62. __EXTERN void     v_circle __PROTO((int handle, int x, int y, int radius));
  63. __EXTERN void     v_ellarc __PROTO((int handle, int x, int y, int xrad,
  64.                    int yrad, int begang, int endang));
  65. __EXTERN void     v_ellpie __PROTO((int handle, int x, int y, int xrad,
  66.                    int yrad, int begang, int endang));
  67. __EXTERN void     v_ellipse __PROTO((int handle, int x, int y, int xrad, int yrad));
  68. __EXTERN void     v_rbox __PROTO((int handle, int pxyarray[]));
  69. __EXTERN void     v_rfbox __PROTO((int handle, int pxyarray[]));
  70. __EXTERN void     v_justified __PROTO((int handle, int x, int y, char *str,
  71.                       int len, int word_space, int char_space));
  72.  
  73. __EXTERN int     vsin_mode  __PROTO((int handle, int dev, int mode));
  74. __EXTERN void     vrq_locator __PROTO((int handle, int x, int y, int *xout,
  75.                       int *yout, int *term));  
  76. __EXTERN int     vsm_locator __PROTO((int handle, int x, int y, int *xout,
  77.                       int *yout, int *term));
  78.  
  79. __EXTERN void     vrq_valuator __PROTO((int handle, int in, int *out, int *term));
  80. __EXTERN void     vsm_valuator __PROTO((int handle, int in, int *out, int *term,
  81.                        int *status));
  82. __EXTERN void     vrq_choice __PROTO((int handle, int cin, int *cout));
  83. __EXTERN int     vsm_choice __PROTO((int handle, int *choice));
  84. __EXTERN void     vrq_string __PROTO((int handle, int len, int echo,
  85.                      int echoxy[], char *str));
  86. __EXTERN int     vsm_string __PROTO((int handle, int len, int echo,
  87.                      int echoxy[], char *str));
  88. __EXTERN void     vsc_form __PROTO((int handle, int form[]));
  89. __EXTERN void     vex_timv __PROTO((int handle, void *time_addr,
  90.                    void **otime_addr, int *time_conv)); 
  91. __EXTERN void     v_show_c __PROTO((int handle, int reset));
  92. __EXTERN void     v_hide_c __PROTO((int handle));
  93. __EXTERN void      vq_mouse __PROTO((int handle, int *pstatus, int *x, int *y));
  94. __EXTERN void     vex_butv __PROTO((int handle, void *new_p, void **old));
  95. __EXTERN void     vex_motv __PROTO((int handle, void *new_p, void **old));
  96. __EXTERN void     vex_curv __PROTO((int handle, void *new_p, void **old));
  97. __EXTERN void     vq_key_s __PROTO((int handle, int *state));
  98.  
  99.  
  100. __EXTERN void     vq_extnd __PROTO((int handle, int flag, int work_out[]));
  101. __EXTERN int     vq_color __PROTO((int handle, int index, int flag, int rgb[]));
  102. __EXTERN void     vql_attribute __PROTO((int handle, int atrib[]));
  103. __EXTERN void     vqm_attributes __PROTO((int handle, int atrib[]));
  104. __EXTERN void     vqf_attributes __PROTO((int handle, int atrib[]));
  105. __EXTERN void     vqt_attributes __PROTO((int handle, int atrib[]));
  106. __EXTERN void     vqt_extent __PROTO((int handle, char *str, int extent[]));
  107. __EXTERN int     vqt_width __PROTO((int handle, int chr, int *cw, int *ldelta,
  108.                     int *rdelta));
  109. __EXTERN int     vqt_name __PROTO((int handle, int element, char *name));
  110. __EXTERN void     vq_cellarray __PROTO((int handle, int pxyarray[], int row_len,
  111.                        int nrows, int *el_used, int *rows_used,
  112.                        int *status, int color[]));  
  113. __EXTERN void     vqin_mode __PROTO((int handle, int dev, int *mode));
  114. __EXTERN void     vqt_fontinfo __PROTO((int handle, int *minade, int *maxade,
  115.                        int distances[], int *maxwidth,
  116.                        int effects[]));  
  117. __EXTERN void     vqt_font_info __PROTO((int handle, int *minade, int *maxade,
  118.                     int distances[], int *maxwidth,
  119.                     int effects[]));  
  120.  
  121.  
  122. __EXTERN void     v_pline __PROTO((int handle, int count, int pxyarray[]));
  123. __EXTERN void     v_pmarker __PROTO((int handle, int count, int pxyarray[]));
  124. __EXTERN int     v_gtext __PROTO((int handle, int x, int y, char *str));
  125. __EXTERN void     v_fillarea __PROTO((int handle, int count, int pxyarray[]));
  126. __EXTERN void     v_cellarray __PROTO((int handle, int pxyarray[],
  127.                       int row_length, int elements, int nrows,
  128.                       int write_mode, int colarray[]));
  129. __EXTERN void     v_contourfill __PROTO((int handle, int x, int y, int index));
  130. __EXTERN void     vr_recfl __PROTO((int handle, int pxyarray[]));
  131.  
  132.  
  133. __EXTERN void     vro_cpyfm __PROTO((int handle, int mode, int pxyarray[],
  134.                     void *src, void *dst));
  135. __EXTERN void     vrt_cpyfm __PROTO((int handle, int mode, int pxyarray[],
  136.                     void *src, void *dst, int color[]));  
  137. __EXTERN void     vr_trnfm __PROTO((int handle, void *src, void *dst));
  138. __EXTERN void     v_get_pixel __PROTO((int handle, int x, int y, int *pel,
  139.                       int *indx)); 
  140.  
  141. /* Verbose headers. They do seem to leave out the fact that the character
  142.  * coordinates are from (1, 1) (top left corner..).
  143.  */
  144.  
  145. /*        vq_chcells
  146.  * Inquire addressable Alpha character cells.
  147.  * -1 for no cursor addressing (value for `*n_cols' ? )
  148.  */
  149. __EXTERN void vq_chcells __PROTO((int handle, int *n_rows, int *n_cols));
  150.  
  151. /*        v_exit_cur
  152.  * Exit alpha mode.
  153.  */
  154. __EXTERN void v_exit_cur __PROTO((int handle));
  155.  
  156.  
  157. /*        v_enter_cur
  158.  * Enter alpha mode
  159.  */
  160. __EXTERN void v_enter_cur __PROTO((int handle));
  161.  
  162. /*        v_curup
  163.  * Alpha cursor up (do nothing if at top).
  164.  */
  165. __EXTERN void v_curup __PROTO((int handle));
  166.  
  167. /*        v_curdown
  168.  * Alpha cursor down (do nothing if at bottom).
  169.  */
  170. __EXTERN void v_curdown __PROTO((int handle));
  171.  
  172. /*        v_curright
  173.  * Alpha cursor right (do nothing if at right edge).
  174.  */
  175. __EXTERN void v_curright __PROTO((int handle));
  176.  
  177. /*        v_curleft
  178.  * Alpha cursor left (do nothing if at left edge).
  179.  */
  180. __EXTERN void v_curleft __PROTO((int handle));
  181.  
  182. /*        v_curhome
  183.  * Alpha cursor home.
  184.  */
  185. __EXTERN void v_curhome __PROTO((int handle));
  186.  
  187. /*        v_eeos
  188.  * Erase to end of screen.
  189.  */
  190. __EXTERN void v_eeos __PROTO((int handle));
  191.  
  192. /*        v_eeol
  193.  * Erase to end of line.
  194.  */
  195. __EXTERN void v_eeol __PROTO((int handle));
  196.  
  197. /*        vs_curaddress
  198.  * Direct set position.
  199.  */
  200. __EXTERN void vs_curaddress __PROTO((int handle, int row, int col));
  201.  
  202. /*        v_curtext
  203.  * Output cursor addressable text (string `s').
  204.  */
  205. __EXTERN void v_curtext __PROTO((int handle, char *s));
  206.  
  207. /*        v_rvon
  208.  * Reverse video on.
  209.  */
  210. __EXTERN void v_rvon __PROTO((int handle));
  211.  
  212. /*        v_rvoff
  213.  * Reverse video off
  214.  */
  215. __EXTERN void v_rvoff __PROTO((int handle));
  216.  
  217. /*        vq_curaddress
  218.  * Inquire current cursor address.
  219.  */
  220. __EXTERN void vq_curaddress __PROTO((int handle, int *cur_row, int *cur_col));
  221.  
  222. /*
  223.  * more vdi esc bindings
  224.  */
  225. __EXTERN int  vq_tabstatus __PROTO((int handle));
  226. __EXTERN void v_hardcopy __PROTO((int handle));
  227. __EXTERN void v_dspcur  __PROTO((int handle, int x, int y));
  228. __EXTERN void v_rmcur __PROTO((int handle));
  229. __EXTERN void v_form_adv __PROTO((int handle));
  230. __EXTERN void v_output_window __PROTO((int handle, int *pxyarray));
  231. __EXTERN void v_clear_disp_list __PROTO((int handle));
  232. __EXTERN void v_bit_image __PROTO((int handle, const char *filename,
  233.             int aspect, int x_scale,
  234.             int y_scale, int h_align, int v_align,
  235.             int *pxyarray));
  236. __EXTERN void vq_scan __PROTO((int handle, int *g_slice, int *g_page,
  237.         int *a_slice, int *a_page, int *div_fac));
  238. __EXTERN void v_alpha_text __PROTO((int handle, const char *string));
  239. __EXTERN int  vs_palette __PROTO(( int handle, int palette));
  240. __EXTERN void v_sound __PROTO((int handle, int frequency, int duration));
  241. __EXTERN int  vs_mute __PROTO((int handle, int action));
  242. __EXTERN void vt_resolution __PROTO(( int handle, int xres, int yres,
  243.             int *xset, int *yset));
  244. __EXTERN void vt_axis __PROTO((int handle, int xres, int yres, int *xset,
  245.             int *yset));
  246. __EXTERN void vt_origin __PROTO((int handle, int xorigin, int yorigin));
  247. __EXTERN void vq_dimensions __PROTO((int handle, int *xdimension,
  248.         int *ydimension));
  249. __EXTERN void vt_alignment __PROTO((int handle, int dx, int dy));
  250. __EXTERN void vsp_film __PROTO((int handle, int index, int lightness));
  251. __EXTERN int  vqp_filmname __PROTO((int handle, int index, char *name));
  252. __EXTERN void vsc_expose __PROTO((int handle, int state));
  253. __EXTERN void v_meta_extents __PROTO((int handle, int min_x, int min_y,
  254.         int max_x, int max_y));
  255. __EXTERN void v_write_meta __PROTO((int handle, int num_intin, int *a_intin, int num_ptsin,
  256.             int *a_ptsin));
  257. __EXTERN void vm_pagesize __PROTO((int handle, int pgwidth, int pgheight));
  258. __EXTERN void vm_coords __PROTO((int handle, int llx, int lly, int urx,
  259.         int ury));
  260. __EXTERN void vm_filename __PROTO((int handle, const char *filename));
  261. __EXTERN void v_escape2000 __PROTO((int handle, int times));
  262.  
  263. /* is gdos present */
  264.  
  265. /* return values for vq_vgdos() inquiry */
  266. #define GDOS_NONE -2L        /* no GDOS installed */
  267. #define GDOS_FSM  0x5F46534DL    /* '_FSM' */
  268. #define GDOS_FNT  0x5F464E54L    /* '_FNT' */
  269.  
  270. #ifdef __GNUC_INLINE__
  271. #define vq_vgdos()                \
  272. ({                        \
  273.     register unsigned long ret __asm__("d0");    \
  274.     __asm__ volatile            \
  275.     ("                    \
  276.         movq    #-2,d0;            \
  277.         trap    #2 "            \
  278.     : "=r"(ret)                /* output */ \
  279.     :                    \
  280.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */ \
  281.     );                    \
  282.     ret;                    \
  283. })
  284. #else 
  285. __EXTERN unsigned long vq_gdos __PROTO((void));
  286. #endif /* __GNUC__ | !__NO_INLINE__ */    
  287.  
  288. /* FSM gdos bindings */
  289.  
  290. /* ---------------------------------------------------------------------------
  291.  * Retrieve placement information for FSM generated characters
  292.  * Information is placed in infoarray of 52 ints.
  293.  * Borrow a soothsayer from DRI or Atari to find its meaning.
  294.  *
  295.  * This is a temporary bindings since one genius decided
  296.  * that some entries in infoarray will represent real numbers.
  297.  * You may fully expect that that this representation of reals is
  298.  * absolutely different from what your compiler is using.
  299.  * Count your lucky stars if at least sizeof(double) == 2 * sizeof(int).
  300.  * Or maybe sizeof(double) is supposed to be sizeof(float)?
  301.  */
  302. __EXTERN void v_getbitmap_info __PROTO((int handle, int ch, int infoarray[]));
  303.  
  304. /*
  305.  * Inquire text extent, accounting for FSM text placement
  306.  */
  307. __EXTERN void vqt_f_extent __PROTO((int handle, const char *str, int extent[]));
  308.  
  309. /*
  310.  * Draw FSM text (accounts for fractional advances in rotated text)
  311.  */
  312. __EXTERN void v_ftext __PROTO((int handle, int x, int y, const char *str));
  313.  
  314. /*
  315.  * Release memory associated with outline component generated by v_getoutline()
  316.  */
  317. __EXTERN void v_killoutline __PROTO((int handle, void *component));
  318.  
  319. /*
  320.  * Generate an outline for character ch, and return the address of the outline.
  321.  */
  322. __EXTERN void v_getoutline __PROTO((int handle, int ch, void **component));
  323.  
  324. /*
  325.  * Set scratch buffer allocation mode.
  326.  * mode=0: (default) account for FSM fonts when allocating scratch buffers
  327.  * mode=1: account only for BM fonts
  328.  * mode=2: allocate no scratch buffer
  329.  */
  330. __EXTERN void vst_scratch __PROTO((int handle, int mode));
  331.  
  332. /*
  333.  * Set FSM error mode.
  334.  * mode=1: (default) errors go to screen.
  335.  * mode=0: errors reported in error variable `errorvar'.
  336.  */
  337. __EXTERN void vst_error __PROTO((int handle, int mode, int *errorvar));
  338.  
  339. /*
  340.  * v_gtext with optional shadow attribute
  341.  */
  342. __EXTERN void    v_shtext __PROTO(( int wsid, int x, int y, const char *text,
  343.                   int color, int xshadow, int yshadow ));
  344.  
  345. /*
  346.  * Set character cell height by arbitrary points.
  347.  */
  348. __EXTERN int    vst_arbpt __PROTO((  int handle, int point, int *wchar,
  349.                    int *hchar, int *wcell, int *hcell ));
  350.  
  351. /*
  352.  * Inquire FSM text advance placement vector.
  353.  */
  354. __EXTERN void    vqt_advance __PROTO(( int handle, int ch, int *xadv,
  355.                      int *yadv, int *xrem, int *yrem)); 
  356.  
  357. /*
  358.  * Inquire device status information.
  359.  */
  360. __EXTERN void    vqt_devinfo __PROTO(( int handle, int device, int *isdev,
  361.                      char *drivername ));
  362.  
  363. /*
  364.  * Save FSM cache to disk.
  365.  */
  366. __EXTERN int    v_savecache __PROTO(( int handle, char *filename ));
  367.  
  368. /*
  369.  * Load/merge FSM cache from disk.
  370.  */
  371. __EXTERN int    v_loadcache __PROTO(( int handle, char *filename, int mode ));
  372.  
  373. /*
  374.  * Flush FSM cache.
  375.  */
  376. __EXTERN int    v_flushcache __PROTO(( int handle ));
  377.  
  378. /*
  379.  * Set character cell width by arbitrary points.
  380.  */
  381. __EXTERN int    vst_setsize __PROTO(( int handle, int point, int *wchar,
  382.                      int *hchar, int *wcell, int *hcell ));
  383.  
  384. /*
  385.  * Set FSM skew.
  386.  */
  387. __EXTERN int    vst_skew __PROTO(( int handle, int skew ));
  388.  
  389. /*
  390.  * Get FSM GASCII tables.
  391.  */
  392. __EXTERN void    vqt_get_tables __PROTO(( int handle, void **gascii,
  393.                     void **style ));
  394.  
  395. /* 
  396.  * Get FSM cashe size
  397.  */
  398. __EXTERN void    vqt_cachesize __PROTO(( int handle, int which_cache,
  399.                        size_t *size ));
  400.  
  401. /*
  402.  * bezier curves stuff
  403.  */
  404. __EXTERN void v_set_app_buff __PROTO((void **buf_p, int size));
  405.  
  406. __EXTERN int v_bez __PROTO((int handle, int count,
  407.                      int *xyarr, char *bezarr,
  408.                  int extent[4], int *npts, int *nmvs));
  409. __EXTERN int v_bez_fill __PROTO((int handle, int count,
  410.                  int *xyarr, char *bezarr,
  411.                  int extent[4], int *npts, int *nmvs));
  412. __EXTERN int v_bez_qual __PROTO((int handle, int percent, int *actual));
  413.  
  414. #ifdef ALTERNATE
  415.  
  416. /* Use these #defines if you _really_ want to stick to DRI conventions */
  417.  
  418. __EXTERN int v_bez_con __PROTO((int handle, int onoff));
  419. #define v_bez_on(x)    (int)v_bez_con((x), 1)
  420. #define v_bez_off(x)    (void)v_bez_con((x), 0)
  421.  
  422. #else
  423. __EXTERN int v_bez_on __PROTO((int handle));
  424. __EXTERN void v_bez_off __PROTO((int handle));
  425. #endif /* ALTERNATE */
  426.  
  427. #ifdef __cplusplus
  428. }
  429. #endif
  430.  
  431. #endif /* _VDIBIND_H */
  432.